const express = require('express')
const server = express()
// 解决跨域问题
const cors = require('cors')
server.use(cors())
// 导入文章
const accountRouter = require('./router/account_router.js')
server.use('/api', accountRouter)
// 导入用户路由
const userRouter = require('./router/user_router.js')
server.use('/my', userRouter)
// 导入文章分类路由
const cateRouter = require('./router/cate_router.js')
server.use('/my/article', cateRouter)
// 导入前台接口路由
const indexRouter = require('./router/index_router.js')
server.use('/index', indexRouter)

// 静态托管图片文件夹
server.use('/uploads', express.static('uploads'))
// 中间件技术-验证 token
const jwt = require('express-jwt');
// app.use(jwt().unless());
// jwt() 用于解析token，并将 token 中保存的数据 赋值给 req.user
// unless() 约定某个接口不需要身份认证
server.use(jwt({
  secret: 'bignews1', // 生成token时的 钥匙，必须统一
  algorithms: ['HS256'] // 必填，加密算法，无需了解
}).unless({
  path: ['/user/login', '/user/reguser'] // 除了这两个接口，其他都需要认证
}));
// 错误处理中间件
server.use((err, req, res, next) => {
  if (err.name === 'UnauthorizedError') {
    // res.status(401).send('invalid token...');
    res.status(401).send({
      status: 1,
      message: '身份认证失败！'
    });
  }
});
server.listen(3000, () => {
  console.log('您的3000端口已在服务器打开了');
})